#ifndef __WORKER_H__
#define __WORKER_H__
#include <stdlib.h>
#include <pthread.h>
#include <strings.h>
#include <unistd.h>
#include "taskQueue.h"

// 线程池中保存所有工作线程结构体
typedef struct worker_list_s
{
    pthread_t *workers; // 线程池中的工作线程数组
    int worker_count;   // 线程池中的工作线程数量
} worker_list_t;

// 需要共享的资源
typedef struct shared_resource_s
{
    task_queue_t task_queue; // 任务队列
    pthread_mutex_t mutex;    // 互斥锁
    pthread_cond_t cond;      // 条件变量
    int exit_flag;            // 退出标志 (0: 不退出, 1: 退出)
} shared_resource_t;

/**
 * @brief 工作线程的工作函数
 *
 * @param arg 需要共享的资源
 * @return void* 线程退出时的返回值
 */
void *worker_task(void *arg);

/**
 * @brief 初始化线程池中的工作线程
 *
 * @param list
 * @param worker_count
 */
void workerList_init(worker_list_t *list, int worker_count, shared_resource_t *shared_resource);

#endif // __WORKER_H__